<!--
  Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.

  https://www.mall4j.com/

  未经允许，不可做商业用途！

  版权所有，侵权必究！
-->

<template>
  <div class="Mall4j goods-module-items">
    <div class="top-header">
      <div
        class="main-title"
        @click="handleRedirect"
      >
        <span>{{ config.mainTitle }}</span>
        <img
          src="@/assets/images/goods_recommand.png"
          alt="图片加载失败"
        >
      </div>
      <div class="sub-title">
        {{ config.subTitle }}
      </div>
    </div>
    <div class="bottom-content">
      <template v-if="config.goodsList && config.goodsList.length > 0">
        <div
          v-for="(item, index) in config.goodsList"
          :key="index"
          class="content-items"
          @click="handleClick(item)"
        >
          <div class="left-img">
            <el-image
              :key="item.imgs"
              :src="checkFileUrl(item.imgs)"
              fit="fill"
              lazy
            >
              <template #error>
                <div class="image-slot">
                  <img
                    style="width: 100%"
                    src="@/assets/img/def.png"
                    alt
                  >
                </div>
              </template>
            </el-image>
            <!-- 下架商品蒙版 start -->
            <div
              v-if="item.status !== 1"
              class="imgs_shelves"
            >
              <img
                class="been_imgs"
                src="@/assets/images/been_shelves.png"
                alt
              >
            </div>
            <!-- 下架商品蒙版 end -->
          </div>
          <div class="right-text">
            <div class="name">
              {{ item.name }}{{ item.description }}
            </div>
            <div class="totals">
              <div
                class="actual"
                :style="setPriceLength(item, 'style')"
              >
                <span>￥</span>
                <span>{{ getPrice(item.price, 'left') }}.</span>
                <span>{{ getPrice(item.price, 'right') }}</span>
              </div>
              <div
                v-show="setPriceLength(item, 'boolean')"
                class="del-price"
              >
                ￥{{ getPrice(item.orignPrice, 'left') }}.{{ getPrice(item.orignPrice, 'right') }}
              </div>
            </div>
          </div>
        </div>
      </template>
      <template v-else>
        <div
          v-for="index in defaultArr.length"
          :key="index"
          class="content-items"
        >
          <div class="left-img">
            <el-image
              src=""
              fit="cover"
            >
              <template #error>
                <div class="image-slot">
                  <img
                    style="width: 100%"
                    src="@/assets/img/def.png"
                    alt
                  >
                </div>
              </template>
            </el-image>
          </div>
          <div class="right-text">
            <div class="name">
              商品名称商品描述
            </div>
            <div class="totals">
              <div class="actual">
                <span>￥</span>
                <span>价格</span>
                <span />
              </div>
              <div class="del-price">
                原价
              </div>
            </div>
          </div>
        </div>
      </template>
    </div>
  </div>
</template>
<script setup>
import { redirectPath } from '../../common/pageConfig.js'
import { ElMessage } from 'element-plus'
import { checkFileUrl } from '@/utils/index.js'

const props = defineProps({
  config: { // 配置数据
    type: Object,
    default: () => {}
  }
})

const defaultArr = new Array(3) // 默认数组

// 得到价格显示
const getPrice = computed(() => {
  return (price, type) => {
    if (!price) return
    const point = price.toString().indexOf('.') // 如果为-1则表示没找到
    let leftPrice
    let rightPrice
    if (point === -1) { // 当前是整数
      leftPrice = price
      rightPrice = '00'
    } else {
      leftPrice = price.toString().slice(0, point)
      rightPrice = price.toString().slice(point + 1)
    }
    switch (type) {
      case 'left':
        return leftPrice
      case 'right':
        return rightPrice
      default:
        break
    }
  }
})

const setPriceLength = computed(() => {
  return (val, type) => {
    let status
    let style
    if (!val.orignPrice) return
    if (val && val.price.toString().length >= 12) {
      status = false
      style = 'width: calc(100% - 5px);text-overflow: ellipsis;overflow: hidden;word-break: break-all;white-space: nowrap'
    } else {
      status = true
      style = ''
    }
    if (type === 'style') {
      return style
    } else if (type === 'boolean') {
      return status
    }
  }
})

// 跳转
const handleRedirect = () => {
  const params = {
    path: {
      type: props.config.titleLink.type,
      name: props.config.titleLink.name,
      link: props.config.titleLink.link
    }
  }
  redirectPath(router, params)
}

const router = useRouter()
// 点击商品
const handleClick = (item) => {
  if (item.status !== 1) {
    return ElMessage.warning('当前商品已下架')
  }
  const newPage = router.resolve({ path: '/detail', query: { prodId: item.id } })
  window.open(newPage.href, '_blank', 'noopener,noreferrer')
}

</script>
<style lang="scss" scoped>
@use "index";
</style>
